package com.onluy.frameworkcloud.batis.dao;


import java.util.List;
import org.apache.ibatis.session.SqlSession;
import com.onluy.frameworkcloud.batis.dialect.Dialect;
import com.onluy.frameworkcloud.data.bean.PageData;
import com.onluy.frameworkcloud.data.bean.Pagination;
import com.onluy.frameworkcloud.data.entity.BaseEntity;
import com.onluy.frameworkcloud.data.entity.Entity;

public interface Dao {
    SqlSession getSqlSession();

    Dialect getDialect();

    <E> List<E> selectList(String arg0);

    <E> List<E> selectList(String arg0, Object arg1);

    <E> PageData<E> selectList(String arg0, Object arg1, Pagination arg2);

    <E> List<E> selectList(Entity arg0);

    <E> List<E> selectList(Entity arg0, Integer arg1);

    <E> PageData<E> selectList(Entity arg0, Pagination arg1);

    <E> PageData<E> selectList(Entity arg0, Pagination arg1, Integer arg2);

    <T> T selectOne(String arg0);

    <T> T selectOne(String arg0, Object arg1);

    <T> T selectOne(Entity arg0);

    <T> T selectOne(Entity arg0, Integer arg1);

    Long selectCount(String arg0);

    Long selectCount(String arg0, Object arg1);

    Long selectCount(Entity arg0);

    Long selectCount(Entity arg0, Integer arg1);

    int insert(String arg0);

    int insert(String arg0, Object arg1);

    int insert(BaseEntity arg0);

    void insertBatch(List<? extends BaseEntity> arg0);

    int update(String arg0);

    int update(String arg0, Object arg1);

    int update(BaseEntity arg0);

    void updateBatch(List<? extends BaseEntity> arg0, String... arg1);

    int delete(String arg0);

    int delete(String arg0, Object arg1);

    int delete(Entity arg0);

    void deleteBatch(List<? extends BaseEntity> arg0, String... arg1);

    int save(BaseEntity arg0);

    void executeBatch(String arg0, List<?> arg1);
}